// pages/i/pay-password.js
const UserService = require('../../services/user');

Page({

    /**
     * 页面的初始数据
     */
    data: {
        pay_password: '',
        passwordArray: ['', '', '', '', '', ''],
        inputFocus: false,
        isSetPayPassword: false,
        sms: '',
        beautyPhone: '',
        userInfo: null
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 页面加载时自动聚焦输入框，让第一个方框激活
        this.setData({ inputFocus: true });
        this.isSetPayPassword();
        this.getUserInfo();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    toGetPassword() {
        wx.navigateTo({
            url: '/pages/i/get-password'
        })
    },

    onInput(e) {
        let val = e.detail.value.replace(/\D/g, '');
        if (val.length > 6) val = val.slice(0, 6);

        // 将密码转换为数组显示
        const passwordArray = ['', '', '', '', '', ''];
        for (let i = 0; i < val.length; i++) {
            passwordArray[i] = val[i];
        }

        this.setData({
            pay_password: val,
            passwordArray: passwordArray
        });
    },

    focusInput() {
        // 延迟设置焦点，确保点击事件处理完成后再聚焦
        setTimeout(() => {
            this.setData({ inputFocus: true });
        }, 50);
    },

    async doConfirm() {
        const { pay_password, sms, isSetPayPassword } = this.data;
        
        // 验证支付密码
        if (!/^\d{6}$/.test(pay_password)) {
            wx.showToast({ title: '请输入6位数字支付密码', icon: 'none' });
            return;
        }

        // 如果已设置过支付密码，需要验证手机号
        if (isSetPayPassword) {
            if (!sms) {
                wx.showToast({ title: '请输入短信验证码', icon: 'none' });
                return;
            }
            if (sms.length !== 6 || !/^\d{6}$/.test(sms)) {
                wx.showToast({ title: '验证码必须是6位数字', icon: 'none' });
                return;
            }
        }

        try {
            wx.showLoading({
                title: isSetPayPassword ? '修改中...' : '设置中...'
            });

            // 这里应该调用设置/修改支付密码的接口
            // 如果已设置过密码，需要传递验证码
            const params = {
                pay_password,
                showLoading: false // 我们已经显示了loading
            };
            
            if (isSetPayPassword) {
                params.code = sms; // 添加验证码参数
            }

            const result = await UserService.setPayPassword(params);

            wx.hideLoading();
            
            if (result.success) {
                wx.showToast({ 
                    title: isSetPayPassword ? '修改成功' : '设置成功', 
                    icon: 'success' 
                });
                setTimeout(() => { wx.navigateBack(); }, 1000);
            } else {
                wx.showToast({ title: result.message || (isSetPayPassword ? '修改失败' : '设置失败'), icon: 'none' });
            }
        } catch (error) {
            wx.hideLoading();
            wx.showToast({ 
                title: isSetPayPassword ? '修改失败，请重试' : '设置失败，请重试', 
                icon: 'none' 
            });
        }
    },

    async isSetPayPassword() {
        const result = await UserService.isSetPayPassword({
            showLoading: true
        });

        if(result.success){
            this.setData({ isSetPayPassword: result.data });
        }
    },

    /**
     * 获取用户信息
     */
    async getUserInfo() {
        try {
            const auth = require('../../utils/auth.js');
            const userInfo = auth.getUserInfo();
            if (userInfo && userInfo.phone) {
                this.setData({
                    userInfo: userInfo,
                    beautyPhone: '****' + userInfo.phone.slice(-4)
                });
            }
        } catch (error) {
            console.error('获取用户信息失败:', error);
        }
    },

    /**
     * 发送验证码
     */
    async sendSmsCode() {
        try {
            const { userInfo } = this.data;

            if (!userInfo || !userInfo.phone) {
                wx.showToast({
                    title: '用户信息不完整',
                    icon: 'none'
                });
                return;
            }

            wx.showLoading({
                title: '发送中...'
            });

            // 调用发送验证码的接口
            const result = await UserService.sendCode();   

            if(result.success){
                this.setData({
                    sms: result.data
                },function(){
                    wx.hideLoading();
                    wx.showToast({
                        title: '验证码已发送',
                        icon: 'success'
                    });
                });
            }else{
                wx.hideLoading();
                wx.showToast({
                    title: result.message || '发送失败',
                    icon: 'none'
                });
            }

        } catch (error) {
            wx.hideLoading();
            wx.showToast({
                title: '发送失败，请重试',
                icon: 'none'
            });
        }
    },


})